#include <iostream>
#define _  ios_base::sync_with_stdio(0),cin.tie(0)
using namespace std;
int k,m,n=10;
typedef long long ll;
struct Matrix{
	ll tmp[15][15];
	Matrix(ll e=0){
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				tmp[i][j]=e*(i==j);
	}
	Matrix mul(Matrix A,Matrix B){
		Matrix ans(0);
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				for(int k=1;k<=n;k++){
					ans.tmp[i][j]=(ans.tmp[i][j]+(A.tmp[i][k]*B.tmp[k][j])%m)%m;
				}
			}
		}
		return ans;
	}
	Matrix qpow(Matrix A,ll b){
		Matrix ans(1);
		while(b){
			if(b&1)
				ans=mul(ans,A);
			b>>=1;
			A=mul(A,A);
		} 
		return ans;
	}
};

int main(){
	_;
	while(cin>>k>>m){
		Matrix matb,matc;
		for(int j=1;j<=n;j++){
			cin>>matb.tmp[1][j];
		}
		for(int i=2;i<=n;i++){
			for(int j=1;j<=n;j++){
				if(i-1==j)
				matb.tmp[i][j]=1;
				else
				matb.tmp[i][j]=0;
			}
		}		
		for(int j=1;j<=n;j++)
			matc.tmp[j][1]=n-j;
		matb=matb.qpow(matb,k-9);
//		for(int i=1;i<=10;i++){
//			for(int j=1;j<=10;j++){
//				cout<<matb.tmp[i][j]<<" ";
//			}
//			cout<<endl;
//		}
//		for(int i=1;i<=10;i++){
//			for(int j=1;j<=10;j++){
//				cout<<matc.tmp[i][j]<<" ";
//			}
//			cout<<endl;
//		}
		matb=matb.mul(matb,matc);
//		for(int i=1;i<=10;i++){
//			for(int j=1;j<=10;j++){
//				cout<<matb.tmp[i][j]<<" ";
//			}
//			cout<<endl;
//		}
		cout<<matb.tmp[1][1]<<endl;
	} 
	
	return 0;
}


